package com.tmsps.ne4weixin.api;

import com.tmsps.ne4weixin.config.WxConfig;

/**
 * @Title: BaseAPI.java
 * @Package: com.tmsps.ne4weixin.api
 * @Description: BaseAPI
 * @author: hanjiefei
 * @date: 2019-10-22
 * @version V1.0
 * @Copyright: 2019 
 */
public class BaseAPI {

	protected final WxConfig wxConfig;

	public BaseAPI(WxConfig wxConfig) {
		this.wxConfig = wxConfig;
	}
	
	/**
	 * 客服接口-发消息,http请求方式: POST
	 */
	public static final String SEND_MSG = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s";
	/**
	 * 客服输入状态,http请求方式: POST
	 */
	public static final String TYPING = "https://api.weixin.qq.com/cgi-bin/message/custom/typing?access_token=%s";
	/**
     * 新增临时素材 url,http请求方式：POST/FORM
     */
	public static final String MEDIA_ADD_TEMP = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=TYPE";
	/**
     * 获取临时素材 url,http请求方式: GET
     */
	public static final String MEDIA_GET_TEMP = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=MEDIA_ID";
	/**
	 * 高清语音素材获取接口,http请求方式: GET,https调用
	 */
	public static final String MEDIA_HQ_VOICE = "https://api.weixin.qq.com/cgi-bin/media/get/jssdk?access_token=%s&media_id=MEDIA_ID";
	/**
	 * 新增永久图文素材,http请求方式: POST，https协议
	 */
	public static final String MEDIA_ADD_NEWS = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=%s";
	/**
	 * 修改永久图文素材,http请求方式: POST
	 */
	public static final String MEDIA_UPDATE_NEWS = "https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=%s";
	/**
	 * 新增其他类型永久素材,http请求方式: POST，https协议
	 */
	public static final String MEDIA_ADD_MATERIAL = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=%s&type=TYPE";
	/**
	 * 下载永久素材,http请求方式: POST,https协议
	 */
	public static final String MEDIA_GET_MATERIAL = "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=%s";
	/**
	 * 删除永久素材,http请求方式: POST
	 */
	public static final String MEDIA_DEL_MATERIAL = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=%s";
	/**
	 * 获取永久素材的列表,http请求方式: POST
	 */
	public static final String MEDIA_BATCHGET_MATERIAL = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s";
	/**
	 * 获取永久素材的总数,http请求方式: GET
	 */
	public static final String MEDIA_GET_MATERIAL_COUNT = "https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=%s";
	/**
	 * 创建自定义菜单,http请求方式：POST（请使用https协议） 
	 */
	public static final String ADD_MENU = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s";
	/**
	 * 获取自定义菜单配置,http请求方式: GET（请使用https协议）
	 */
	public static final String GET_MENU_INFO = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=%s";
	/**
	 * 删除当前使用的自定义菜单,http请求方式：GET
	 * 注意，在个性化菜单时，调用此接口会删除默认菜单及全部个性化菜单。
	 */
	public static final String DEL_MENU = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=%s";
	/**
	 * 查询自定义菜单的结构。http请求方式：GET
	 * 注意，在设置了个性化菜单后，使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息。
	 */
	public static final String GET_MENU = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=%s";
	/**
	 * 创建个性化菜单,http请求方式：POST（请使用https协议）
	 */
	public static final String ADD_CONDITIONAL = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=%s";
	/**
	 * 删除个性化菜单,http请求方式：POST（请使用https协议）
	 */
	public static final String DEL_CONDITIONAL = "https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=%s";
	/**
	 * 测试个性化菜单匹配结果,http请求方式：POST（请使用https协议）
	 */
	public static final String TRY_MATCH = "https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=%s";
	/**
	 * 用来获取进入页面的用户的openid
	 */
	public static final String SNSAPI_BASE = "snsapi_base";
	/**
	 * 用来获取用户的基本信息
	 */
	public static final String SNSAPI_USERINFO = "snsapi_userinfo";
	/**
	 * 用户同意授权，获取code
	 * 注： 若提示"该链接无法访问"，请检查参数是否填写错误，是否拥有scope参数对应的授权作用域权限。
	 */
	public static final String GET_CODE = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s#wechat_redirect";
	/**
	 * 通过code换取网页授权access_token
	 * 参数		是否必须	说明
	 * appid		是	公众号的唯一标识
	 * secret		是	公众号的appsecret
	 * code			是	填写第一步获取的code参数
	 * grant_type	是	填写为authorization_code
	 */
	public static final String GET_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
	/**
	 * 刷新access_token
	 * 参数			是否必须	说明
	 * appid			是	公众号的唯一标识
	 * grant_type		是	填写为refresh_token
	 * refresh_token	是	填写通过access_token获取到的refresh_token参数
	 */
	public static final String REFRESH_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%s&grant_type=refresh_token&refresh_token=%s";
	/**
	 * 拉取用户信息(需scope为 snsapi_userinfo),http：GET（请使用https协议） 
	 */
	public static final String GET_USER_INFO = "https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=%s";
	/**
	 * 检验授权凭证（access_token）是否有效,http：GET（请使用https协议）
	 */
	public static final String CHECK_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/auth?access_token=%s&openid=%s";
	/**
	 * 创建二维码,http请求方式: POST
	 */
	public static final String CREATE = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s";
	/**
	 * 通过ticket换取二维码,HTTP GET请求（请使用https协议）
	 * 提醒：TICKET记得进行UrlEncode
	 */
	public static final String SHOW = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=%s";
	/**
	 * 长链接转短链接,http请求方式: POST
	 */
	public static final String SHORT_URL = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=%s";
    /**
	 * 获得模板ID,http请求方式: POST
	 */
	public static final String TEMPLATE_GET_ID = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=%s";
	/**
	 * 获取模板列表,http请求方式：GET
	 */
	public static final String TEMPLATE_GET_LIST = "https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=%s";
	/**
	 * 删除模板,http请求方式：POST
	 */
	public static final String TEMPLATE_DEL = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=%s";
	/**
	 * 发送模板消息,http请求方式: POST
	 */
	public static final String TEMPLATE_SEND_MSG = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s";
	/**
	 * 获取用户基本信息(UnionID机制),http请求方式: GET
	 * 参数		是否必须	说明
	 * access_token	是	调用接口凭证
	 * openid		是	普通用户的标识，对当前公众号唯一
	 * lang			否	返回国家地区语言版本，zh_CN 简体，zh_TW 繁体，en 英语
	 */
	public static final String USER_INFO = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s";
	/**
	 * 批量获取用户基本信息,http请求方式: POST
	 * 参数	是否必须	说明
	 * openid	是	用户的标识，对当前公众号唯一
	 * lang		否	国家地区语言版本，zh_CN 简体，zh_TW 繁体，en 英语，默认为zh-CN
	 */
	public static final String GET_USER_INFOS = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=%s";
	/**
	 * 获取帐号的关注者列表,http请求方式: GET（请使用https协议）
	 * 参数		是否必须	说明
	 * access_token	是	调用接口凭证
	 * next_openid	是	第一个拉取的OPENID，不填默认从头开始拉取
	 */
	public static final String GET_USERS = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s";
	/**
	 * 获取公众号的黑名单列表,http请求方式：POST（请使用https协议）
	 */
	public static final String GET_BLACK_USERS = "https://api.weixin.qq.com/cgi-bin/tags/members/getblacklist?access_token=%s";
	/**
	 * 拉黑用户,http请求方式：POST（请使用https协议）
	 * 参数		是否必须	说明
	 * access_token	是	调用接口凭证
	 * openid_list	是	需要拉入黑名单的用户的openid，一次拉黑最多允许20个
	 */
	public static final String ADD_BLACK_USERS = "https://api.weixin.qq.com/cgi-bin/tags/members/batchblacklist?access_token=%s";
	/**
	 * 取消拉黑用户,http请求方式：POST（请使用https协议）
	 * 参数		是否必须	说明
	 * access_token	是	调用接口凭证
	 * openid_list	是	需要拉入黑名单的用户的openid，一次拉黑最多允许20个
	 */
	public static final String CANCLE_BLACK_USERS = "https://api.weixin.qq.com/cgi-bin/tags/members/batchunblacklist?access_token=%s";
	/**
	 * 一个公众号，最多可以创建100个标签。
	 */
	public static final String CREATE_TAG = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token=%s";
	
	/**
	 * 创建标签,http请求方式：POST（请使用https协议）
	 */
	public static final String ADD_TAGS = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token=%s";
	/**
	 * 获取公众号已创建的标签,http请求方式：GET（请使用https协议） 
	 */
	public static final String GET_TAGS = "https://api.weixin.qq.com/cgi-bin/tags/get?access_token=%s"; 
	/**
	 * 编辑标签,http请求方式：POST（请使用https协议）
	 */
	public static final String UPDATE_TAGS = "https://api.weixin.qq.com/cgi-bin/tags/update?access_token=%s";
	/**
	 * 删除标签,http请求方式：POST（请使用https协议） 
	 */
	public static final String DEL_TAGS = "https://api.weixin.qq.com/cgi-bin/tags/delete?access_token=%s"; 
	/**
	 * 获取标签下粉丝列表,http请求方式：GET（请使用https协议）
	 */
	public static final String GET_TAGS_FANS = "https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=%s";
	/**
	 * 获取用户身上的标签列表,http请求方式：POST（请使用https协议）
	 */
	public static final String GET_ID_LIST = "https://api.weixin.qq.com/cgi-bin/tags/getidlist?access_token=%s";
	/**
	 *  批量为用户取消标签,http请求方式：POST（请使用https协议）
	 */
	public static final String BATCH_UNTAGS = "https://api.weixin.qq.com/cgi-bin/tags/members/batchuntagging?access_token=%s";
	/**
	 * 批量为用户打标签,http请求方式：POST（请使用https协议）
	 */
	public static final String BATCH_TAGS = "https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=%s";
	
}
